// 会话守卫工具 - 处理页面焦点变化时的会话检查
import { useUserStore } from '@/stores/user'

class SessionGuard {
  constructor() {
    this.isActive = false
    this.lastCheckTime = 0
    this.CHECK_INTERVAL = 60 * 1000 // 1分钟检查一次
    
    this.initVisibilityHandlers()
  }

  // 初始化页面可见性监听器
  initVisibilityHandlers() {
    // 页面可见性变化监听
    document.addEventListener('visibilitychange', () => {
      if (!document.hidden && this.isActive) {
        this.handlePageVisible()
      }
    })

    // 窗口获得焦点监听
    window.addEventListener('focus', () => {
      if (this.isActive) {
        this.handlePageVisible()
      }
    })
  }

  // 页面变为可见时的处理
  async handlePageVisible() {
    const now = Date.now()
    
    // 避免频繁检查
    if (now - this.lastCheckTime < this.CHECK_INTERVAL) {
      return
    }
    
    this.lastCheckTime = now
    
    try {
      const userStore = useUserStore()
      
      // 检查基本登录状态
      if (!userStore.isLoggedIn) {
        return
      }
      
      // 检查会话有效性
      const isValid = await userStore.checkSessionValidity()
    } catch (error) {
      // 忽略检查错误
    }
  }

  // 启动会话守卫
  start() {
    this.isActive = true
  }

  // 停止会话守卫
  stop() {
    this.isActive = false
  }
}

const sessionGuard = new SessionGuard()
export default sessionGuard
